﻿using System.Collections.Generic;
using emp = Tauren.Business.Entity.Model;
using Tauren.Business.DLL.Base;
using Tauren.Business.Entity.Output;
using Tauren.Business.Entity.Model;

namespace Tauren.Business.DLL.Employee
{
    public interface IEmployeeBusiness : IBaseDLL
    {
        /// <summary>
        /// 删除人员基本信息信息
        /// </summary>
        /// </summary>
        /// <param name="model">人员基本信息实体</param>
        /// <returns></returns>
        bool Delete(object id);

        /// <summary>
        /// 获取人员基本信息信息--多个
        /// </summary>
        /// </summary>
        /// <param name="model">人员基本信息实体</param>
        /// <returns></returns>
        emp.Employee GetByCode(string code);

        Dictionary<int, string> GetListByEmpIds(List<string> empids);
        /// <summary>
        /// 获取人员基本信息信息--获取所有集合
        /// </summary>
        /// </summary>
        /// <param name="model">人员基本信息实体</param>
        /// <returns></returns>
        Dictionary<int, string> GetAll();

        /// <summary>
        /// 分页获取数据
        /// </summary>
        /// <param name="queryModel"></param>
        /// <returns></returns>
        List<emp.PageEployeeModel> Pages(Entity.Global.QueryModel queryModel, out long Total);

        /// <summary>
        /// 物理删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        bool PhysicalDelete(int id);

        /// <summary>
        /// 启用/禁用
        /// </summary>
        /// <param name="id"></param>
        /// <param name="enable"></param>
        /// <returns></returns>
        bool Enable(int id, bool enable);

        /// <summary>
        /// 根据组织获取员工基本信息
        /// </summary>
        /// <param name="OrgId"></param>
        /// <returns></returns>
        List<emp.Employee> GetByOrgs(string OrgId);

        /// <summary>
        /// 获取员工的兼职信息
        /// </summary>
        /// <param name="EmpId"></param>
        /// <returns></returns>
        List<Parttimeinfo_OutPut> Parttimes(int EmpId);

        /// <summary>
        /// 添加兼职
        /// </summary>
        /// <param name="parttimeinfos"></param>
        /// <returns></returns>
        bool Insert(List<Parttimeinfo> parttimeinfos,int EmpId);
        double GetSeq();

        /// <summary>
        /// 根据职位获取员工
        /// </summary>
        /// <param name="PostionId">职位id</param>
        /// <returns></returns>
        List<emp.PageEployeeModel> DialogPages(Entity.Global.QueryModel queryModel, out long Total);

        /// <summary>
        /// 流程审批人所在列表
        /// </summary>
        /// <param name="queryModel"></param>
        /// <param name="Total"></param>
        /// <returns></returns>
        List<emp.PageEployeeModel> FlowApproverPages(Entity.Global.QueryModel queryModel, out long Total);
    }
}
